package com.cy.sp03.user.service;

import com.cy.sp01.pojo.User;
import com.cy.sp01.service.UserService;
import com.cy.web.util.JsonUtil;
import com.fasterxml.jackson.core.type.TypeReference;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Service;

import java.util.List;

@RefreshScope   //从Config配置中心刷新到的新用户配置会自动注入
@Slf4j
@Service
public class UserServiceImpl implements UserService {

    //将自定义属性注入到字符串变量中
    @Value("${sp.user-service.users}")
    private String userJson;

    @Override
    public User getUser(Integer id) {
        //userJson --> List<User>
        log.info("users json string : "+userJson);

        //如果只有一个User对象,可以直接用以下方法
        //User user = JsonUtil.from(userJson, User.class);

        //当需要转换的是User集合时，需要jackson提供的类型转换类的对象TypeReference<>(),泛型为List<User> 获得 User的集合类
        List<User> list = JsonUtil.from(userJson, new TypeReference<List<User>>() {});

        //遍历list集合，判断集合中的User对象的id是否存在客户端传入的id，有则返回该对象
        for (User u : list) {
            if (u.getId().equals(id)) {
                return u;
            }
        }

        //没有预设的id，则返回固定的User对象
        return new User(id, "用户名："+id, "密码："+id);
    }

    @Override
    public void addScore(Integer id, Integer score) {

        // 这里增加积分
        log.info("增加用户积分，id="+id+"，积分值，score= "+score);
    }

}
